32–Bit Addressing

32–bit addressing is a feature of System 7 that increases the amount of application memory you can address (use). You can add it to System 6 by installing OPTIMA. It is not related to 32–bit Quick Draw, 32–bit color, or how many colors can show on your screen or video image.

An address is a unique serial number which specifies the location of each byte of information in application memory. Every Modular Mac since the Mac II has been built with hardware that can use 32 bits (a binary number 32 digits long, such as 11010010010100100101001010111011) for addresses but, until recently, only the first 24 bits have been used by the operating system. This “24–bit mode” limited the Mac to using a maximum of 16MB of addressable memory, of which the lower 8MB was assigned to application memory, and the upper 8MB was assigned to NuBus cards, ROMs, and various other devices (see “History of Macintosh Memory”).

When 32–bit addressing is turned on, all 32 digits are used for address information, meaning that up to 4 billion locations (4 gigabytes) can be uniquely identified. This totally eliminates the 8 megabyte limit. 

There are still some hardware limitations in the SIMM socket design, so “only” 128 megabytes of physical memory (eight 16MB SIMMs) can be installed on a standard Modular Mac and up to 256MB on a Quadra 900 or 950. That is the maximum physical RAM you can use as application memory under 32–bit addressing. And, because of memory fragmentation (see “Memory Fragmentation”) only the first quarter of the memory map, that is one gigabyte (1024 megabytes), can be used for extended memory.

Still, for most people, 128MB of physical RAM, extensible to as much as 1024MB of extended memory is plenty. The easiest way to get this if you use a Classic II, LC, LC II, IIci, IIsi, IIvx, IIfx, or a Quadra is to run System 7 with 32–bit addressing turned On. To find out if 32–bit addressing is available, look in the Memory control panel. 

If you have an early Modular Mac (II, IIx, IIcx, or SE/30) running System 7, just install MODE32 and you can do exactly the same thing. System 6 users of all Modular Mac systems (except Quadras) can get 32–bit mode by installing Connectix OPTIMA. OPTIMA is not compatible with MultiFinder, so only Finder may be used. 

32–bit addressing is not available on the Mac Plus, SE, or Classic, but Compact Virtual 3.0 supports 16MB of physical or virtual memory if a 68030 accelerator is installed (see “More than 4MB on Compact Macs”). 

There is no 32–bit addressing or other high memory solution for the Portable or PowerBook 100. Although the PowerBook 140/145 and 170 can use 32–bit addressing mode, there is little point since total installed RAM is limited physically to 8MB (see “Using More Than 4MB on Compact Macintoshes”). The PowerBook 160, 180 and Duos can benefit from 32–bit addressing mode.

32–bit addressing is limited on the Classic II, LC, and LC II to 10MB by the ROMs in these systems. So, for example, if you put two 4MB SIMMs into a Classic II you have a total of 12MB(including the built–in 4MB). But you can only use 10MB, even in 32–bit addressing mode because of the ROMs. Sometimes 32–bit addressing cannot be used because an application, extension, control panel or software built into some peripheral device is not compatible with this mode. Then, 24–bit addressing must be used. (See next section.)

32–bit addressing is imperceptibly faster than 24–bit addressing. The only significant speed improvement comes if it enables you to eliminate I/O bottlenecks by enabling you to add more memory (see “Benefits of Adding Memory”).

24–Bit Addressing

As we mentioned above, the disadvantage of 32–bit addressing is that not all applications, extensions, and other software are compatible with this mode. The alternative is to stay in the much more compatible 24–bit mode and enhance it with MAXIMA. 24–bit mode is the standard addressing mode of System 6 and is also what you get under System 7 when 32–bit addressing is off, or is not available. In standard 24–bit mode only 8MB out of the total available 16MB is normally able to be used as application memory on a Modular Mac.

MAXIMA extends 24–bit addressing by adding some of the upper 8MB into application memory, while still using 24 digit long addresses. It gets most of this extra memory by using addresses originally allocated for six NuBus cards (which are rarely all used, and on many systems cannot all be used anyway.) On Macs using only one NuBus card (or on–board video), MAXIMA extends addressing in 24–bit mode to 14MB and turns the rest into a protected, non–volatile RAM Disk (see “RAM Caches, Disks, and Drives”). 

For each additional NuBus card installed, MAXIMA creates one less megabyte of extended memory. Connectix Virtual and System 7 VM use similar techniques to extend virtual memory in 24–bit mode, and lose the capability to create memory if multiple NuBus cards are installed.

System 6 users are always in 24–bit mode unless Connectix OPTIMA is installed. If you don’t use OPTIMA, MAXIMA is required for high RAM configurations under System 6.

Note that any of the 24–bit memory over eight megabytes on a Modular Mac will be fragmented (see “Memory Fragmentation”), with the result that no single application can use all 14 megabytes under MultiFinder. In 32–bit mode, all of the memory up to one gigabyte is contiguous so that each application can access all the application memory. 

Memory Fragmentation

Memory pre–fragmentation and fragmentation can limit the size of the largest application you can open. This can be an amount significantly below total application memory. Pre–fragmentation is an issue only in 24–bit mode on modular Macs using more than 8MB of application memory or Compact Macs using more than 4MB of application memory. Fragmentation occurs in both 24 and 32–bit modes in all Macs.

In 24–bit mode, the extended memory created by VM, Virtual or MAXIMA is pre–fragmented at the 8 megabyte point on Modular Macs by the ROMs. (In 32–bit mode the fragmentation occurs at 1024MB, one gigabyte, and so, practically speaking is not an issue.) Similar pre–fragmentation occurs on the Plus, SE and Classic at the 4MB level. 

Pre–fragmentation can limit the size of the largest single application you can run using MultiFinder. You might have 14MB of application memory but not be able to open a single 8MB file. System 7 and System 6 MultiFinder can not assign a fragmented block of memory to any one program. This means that while running in 24–bit mode the largest zone for any one application is slightly less than 8 megabytes. The Largest Unused Block of memory is shown in the “About this Macintosh” (System 7) or “About the Finder” (System 6) window.

If you run an application under System 6 in Finder, then all of the memory in the machine (up to 14 megabytes minus the size of the System) will be given to that application. Even then, the available memory is pre–fragmented and some limitations still apply. For example, you can have a 6 megabyte picture buffer, and a 6 megabyte “Undo” buffer but, with many applications, you can’t have a single 12 megabyte picture.

NuBus cards can further pre–fragment memory, but you can arrange your slot cards to minimize the effect. On a Mac II, IIx, IIcx, IIfx or Quadra 700, you should put the cards away from the power supply. On the IIci and Quadra 900/950, put the cards towards the power supply.

The memory map of the Compact Macs is even more pre–fragmented, with a largest unfragmented block of about 4MB out of the total 16MB. This means that you might have 16MB of physical RAM in a Compact Mac equipped to handle 4MB SIMMs and still not be able to open any one application larger than 4MB. Compact Virtual 3.0 overcomes this, however, creating an unfragmented block of as much as 12MB.

In addition to the pre–fragmentation of memory by the ROMs, NuBus cards, and various hardware components of the Mac, memory can be further fragmented when applications are opened and then closed. The best way to show this is with an example. Consider a Mac IIci in 24–bit mode, running 12MB of application memory using Virtual. There will be two blocks of memory, low and high memory, pre–fragmented by the ROMs just above the 8MB level. In low memory, the System will always load at the bottom, occupying the lowest, let’s say, 2MB. So, low memory will have a block of memory of 8 minus 2 or about 6MB. In high memory the ROMs will take up the lowest 512K (just above 8MB) so it will have the space from 8.5MB to 12MB, a total of 3.5MB. The Largest Unused Block displayed under “About This Macintosh...” will be 6MB.

When you open a new application, the System will always try to put it into the highest memory location that can hold it. So, if you open a 2.5MB application, it will go into the top of high memory. The Largest Unused Block will still be 6MB because this largest block was in low memory, which was unaffected.

Now, if you open a second application, say one that takes 3.5MB, there won’t be enough room for it in high memory (which only has 1MB free now) and it will load into the top of low memory, just below the ROMs. Then the Largest Unused Block will be 6 minus 3.5 equals 2.5MB. If you now open a third, 2MB application it will go into low memory below the second one (again because it can’t fit into high memory). Now high memory has more contiguous free space (1MB) than low memory (.5MB) so the Largest Unused Block will be 1MB.

If you then close the second (3.5MB) application you launched, you will fragment memory. Instead of the original two blocks, you will have three blocks of free memory: the low memory below the 2MB application (0.5MB), the low memory above the 2MB application (3.5MB) and the space left in high memory (1MB). Sometimes, after you have used your Mac for a while, memory becomes sufficiently fragmented because of Opening and Closing applications that you may need to close everything and start again.

Because memory is allocated this way, the size and number of applications you can open can be affected by the order in which you open them. So, if you plan to open several applications that will use up most of your memory, it’s often a good practice to start by opening the ones that will most nearly fill high memory. You thereby make the most out of your available memory.

History of 32-Bit Addressing

The amount of RAM that can be “addressed” (used) as application memory on your system is limited by the total number of different memory addresses (locations) that the Macintosh can identify, each with a unique serial number. This identification is performed by sending 1’s and 0’s down a parallel set of data lines called an address bus.

This address bus became an important limitation during the course of the evolution of the Macintosh. Apple’s Macintosh system software was first developed on the Lisa and Mac 128 computers, both of which used the Motorola 68000 microprocessor. Although the internal architecture of the machine used 32–bit address and data paths, this microprocessor only had a 24 line address bus, so no address higher than 224 (about 16 million) was accessible. The top byte (the top eight bits) out of the total of 32 was not used by the 24–bit addressing scheme. So, this 24–bit addressing mode of the Macintosh only supported 16 megabytes of internal addresses.

This 24–bit/16 megabyte limitation was accentuated by another design decision made in the early Mac architecture. Of those 16 megabytes, only the lower 4 were allocated to supporting RAM addresses, hence the “4 megabyte barrier” familiar to users of Compact Macintoshes. The remaining upper 12 megabytes were allocated to addressing the motherboard, video monitors, ROMs, and input/output ports like SCSI and AppleTalk.

The 24–bit addressing mode did not seem like a big limitation on the earliest Macs which had only 128K of RAM. So the unused top byte was put to use by enterprising software engineers to signify various other things. For example, setting the high–order bits of an address could help “tag” (identify) that memory as being temporarily non–relocatable. Thus the hexadecimal address $80001234 represents the same memory location as $00001234, but is just tagged differently. This convention was assumed throughout the operating system, the ROM code, and by the applications which were developed to run on the Mac. And, as you will see, this led to later problems.

Eventually, the 4 megabyte barrier started to become a significant limitation and Apple began to convert the Macintosh hardware, software, and firmware (ROMs) to the 32–bit mode. For the foreseeable future, the internal limitations of RAM addressing would cease to exist. (Unfortunately this memory is also fragmented–at the one gigabyte level. As a result, “only” one gigabyte of application memory can be accessed under System 7’s 32–bit mode. Since, historically, upper level Mac memory needs have doubled every year this should become an issue sometime around 1998!) 

The first step of this conversion program was to incorporate a new microprocessor. With the introduction of the Motorola 68020–based Mac II (and the later 68030–based systems), the Macintosh CPU graduated to a 32–bit address bus. The hardware was able to make all 32–bits of each address significant. 

The 68020 (and later the 68030 and 68040) Macs also featured an improved 24–bit mode. The ROM addresses occur at 8 megabytes (instead of 4 on the earlier Macs) so these new modular Macs could immediately support up to 8 megabytes of RAM.

Virtual and MAXIMA became the first products to cross the 24–bit mode 8 megabyte barrier by collecting unused space in the upper 8MB and allowing the system to use it in the same way as the original lower 8MB of application RAM. Modular Macs with one NuBus card running a video monitor were able to address up to 14 megabytes of application memory using this approach. 

Now the software became a problem. Some of the high–order address bits had been set for non–address purposes, so whenever the hardware used those particular “tagged” addresses the program would fetch information from an incorrect location; i.e. although the hardware was now 32–bit clean, the system, the embedded code in the ROMs, and much of the application software was not. At this point Apple started to clean up their system software and ROM designs, and tried to impress upon third party developers the importance of following Apple guidelines, so the software everyone wrote would work in a full–time 32–bit clean environment when the ROMs and System were ready.

The second step of the conversion program was the new “32–bit clean” ROM designs which were incorporated in the Classic II, LC, LC II, IIci, IIsi, IIvx, IIfx, Quadras, Performas and PowerBooks (except the PowerBook 100). These were first released in 1989 and are capable of accepting full 32–bit addresses. Systems equipped with these ROMs can run in 32–bit mode under System 7 and later systems, provided that the applications and extensions are 32–bit clean. The function of MODE32 is to make this 32–bit mode available for users of Mac II family computers released before the 32–bit clean ROMs were introduced, that is the SE/30, II, IIx, and IIcx. MODE32 contains software that makes these ROMs 32–bit clean.

Apple’s third step was to convert the operating system itself to run in this mode, a feature which is provided as the 32–bit mode option in System 7. In 1994 Apple started shipping Macintosh systems that had only 32-bit addressing as an option, and 24-bit addressing will soon be a relic of computer lore.

The last step in moving to 32–bit mode involves the application software. Only “32–bit clean” applications can be used in 32–bit mode–all others will cause a system crash. Apple made 32–bit mode optional in System 7 because some applications were incompatible with 32–bit mode. Today, there is still some old software in use that crashes in 32-bit mode. When you want to run applications and/or extensions that are not 32–bit clean, you must switch your system to the 24–bit mode.